import com.google.gson.Gson;
import lombok.Data;
import org.junit.Test;
import vo.ConfKey;
import vo.ConfValue;
import vo.MerchConfig;

import java.util.HashMap;
import java.util.Map;

import static org.junit.Assert.assertNotSame;

/**
 * Created by fanzhenyu02 on 2019/12/31.
 */
public class testCopy {

//    /**
//     * 用户
//     */
//    @Data
//    class User {
//
//        private String name;
//        private Address address;
//
//        public User(String name, Address address) {
//            this.name = name;
//            this.address = address;
//        }
//
//        // constructors, getters and setters
//
//    }
//
//    /**
//     * 地址
//     */
//    @Data
//    class Address {
//
//        private String city;
//        private String country;
//
//        public Address(String city, String country) {
//            this.city = city;
//            this.country = country;
//        }
//
//        // constructors, getters and setters
//
//    }
//
//    @Test
//    public void gsonCopy() {
//
//        Address address = new Address("杭州", "中国");
//        User user = new User("大山", address);
//
//        // 使用Gson序列化进行深拷贝
//        Gson gson = new Gson();
//        User copyUser = gson.fromJson(gson.toJson(user), User.class);
//
//        // 修改源对象的值
//        user.getAddress().setCity("深圳");
//
//        // 检查两个对象的值不同
//        assertNotSame(user.getAddress().getCity(), copyUser.getAddress().getCity());
//
//    }
//
//    @Test
//    public void testDeepCopy() {
//        ConfKey ck_01 = new ConfKey("26", "common", "group", "", "", "1");
//        ConfKey ck_02 = new ConfKey("26", "common", "xcx", "", "", "2");
//        ConfKey ck_03 = new ConfKey("36", "common", "tt", "", "", "3");
//
//        ConfValue value_01 = new ConfValue(new MerchConfig("12", "35"), "1");
//        ConfValue value_02 = new ConfValue(new MerchConfig("123", "36"), "1");
//
//        Map<ConfKey, ConfValue> curConfMap = new HashMap<>();
//        curConfMap.put(ck_01, value_01);
//
//        curConfMap.put(ck_02, value_01);
//
//        curConfMap.put(ck_03, value_02);
//
//        Map<ConfKey, ConfValue> copyConfMap = new HashMap<>();
//
//        // 使用Gson序列化进行深拷贝
//        Gson gson = new Gson();
//
//        for (Map.Entry<ConfKey, ConfValue> entry : curConfMap.entrySet()) {
//            ConfKey copyKey = gson.fromJson(gson.toJson(entry.getKey()), ConfKey.class);
//            ConfValue copyValue = gson.fromJson(gson.toJson(entry.getValue()), ConfValue.class);
//            copyConfMap.put(copyKey, copyValue);
//
//        }
//
//        ck_01.setPayMode("after");
//        value_01.getMerchConfig().setMerchId("new new new");
//
//        System.out.println(copyConfMap.size());
//
//    }


}
